﻿using System;
using XSTDZ.ERP.Application.DataContracts;
using System.Collections.Generic;

namespace XSTDZ.ERP.Application
{
    /// <summary>
    /// 商品服务类
    /// </summary>
    public interface IProductService
    {
        #region 产品类别服务
        void AddProductType(ProductTypeDto productTypeDto);
        void UpdateProductType(ProductTypeDto productTypeDto);
        void ConvertProductTypeDeleteState(Guid productTypeId);
        ProductTypeDto GetProductType(Guid productTypeId);
        IList<ProductTypeDto> GetAllProductType();
        IList<ProductTypeDto> GetAllProductTypeNormail();
        IList<ProductTypeDto> GetAllProductTypeDelete();
        IList<ProductTypeDto> GetAllProductType(Guid parentId);
        IList<ProductTypeDto> GetAllProductType(int level);
        IList<ProductTypeDto> GetAllProductType(string typeName);
        #endregion
        #region 产品服务
        void AddProduct(ProductInfoDto productInfoDto);
        void UpdateProduct(ProductInfoDto productInfoDto);
        void ConvertProductDeleteState(Guid productId);
        ProductInfoDto GetProductInfoDto(Guid productId);
        IList<ProductInfoDto> GetProductInfoDto(int pageIndex,int pageSize);
        IList<ProductInfoDto> GetProductInfoDto(int pageIndex, int pageSize,bool isDelete);
        IList<ProductInfoDto> GetProductInfoDto(int pageIndex, int pageSize,Guid productTypeId);
        #endregion

        #region 仓库服务
        void AddStorehouse(StorehouseDto storehouseDto);
        void UpdateStorehouse(StorehouseDto storehouseDto);
        void ConvertStorehouseDeleteState(Guid storehouseId);
        StorehouseDto GetStorehouse(Guid storehouseId);
        IList<StorehouseDto> GetAllStorehouse();
        IList<StorehouseDto> GetAllStorehouse(string orgCode);
        IList<StorehouseDto> GetAllStorehouse(Guid orgId);
        #endregion

        #region 产品工序
        Guid AddProductProcedure(ProductProcedureDto productProcedureDto);
        void DeleteProductProcedure(Guid id);
        void UpdateProductProcedure(ProductProcedureDto productProcedureDto);
        ProductProcedureDto GetProductProcedure(Guid id);
        IEnumerable<ProductProcedureDto> GetAllProductProcedure(Guid productId);
        #endregion
    }
}
